嵌入類型,或者嵌套類型。這是一種把已有的類型,聲明在新的類型裡的方式,這個對程式碼重複使用非常重要。
在Go語言中,沒有繼承的概念,Go提倡的是重複使用程式碼,組合。組合而不是繼承。
來透過標準函數庫 io,來加深印象。
可以看到 ReadWriter的接口是嵌入 Reader 和 Writer 接口而組成的新接口。
這樣就不要重複定義被嵌入接口裡的方法,直接通過嵌入。
type Reader interface {
Read(p []byte) (n int, err error)
}
type Writer interface {
Write(p []byte) (n int, err error)
}
type Closer interface {
Close() error
}
type ReadWriter interface {
Reader
Writer
}
type ReadCloser interface {
Reader
Closer
}
type WriteCloser interface {
Writer
Closer
}
type ReadWriteCloser interface {
Reader
Writer
Closer
}
參考來源:
https://www.flysnow.org/2017/04/06/go-in-action-go-embedded-type.html
https://golang.org/pkg/io/#ReadWriteCloser